package logique.programme;

import logique.solution.Solution;

public class FonctionEconomique extends CombinaisonLineaire {

	private SensOptimisation optimisation;
	double termeConstant = 0.0;

	public FonctionEconomique (SensOptimisation optimisation) {
		super();
		this.optimisation = optimisation;
	}
	public void resetTermeConstant () {
		termeConstant = 0;
	}
	public void addTermeConstant(double t) {
		termeConstant += t;
	}
	public double getTermeConstant() {
		return termeConstant;
	}
	public FonctionEconomique getCopy() {
		FonctionEconomique f = new FonctionEconomique(getOptimisation());
		return f;
	}
	
	public enum SensOptimisation {
		MIN, MAX;
	}

	public SensOptimisation getOptimisation() {
		return optimisation;
	}
	public SensOptimisation getOptimisationOpposee () {
		if (optimisation == SensOptimisation.MAX) {
			return SensOptimisation.MIN;
		}
		else {
			return SensOptimisation.MAX;
		}
	}
	public void setOptimisation (SensOptimisation s) {
		optimisation = s;
	}
	public String toString () {
		return optimisation.name() + "  " + getTermeConstant() + " + " + super.toString();
	}
	public void afficher () {
		System.out.print(optimisation.name() + "  ");
		super.afficher();
	}
	public double evaluer (Solution s) {
		return super.evaluer(s) + termeConstant;
	}
}